
public class Test
{
	public static void main(String[] args)
	{
		GPSAlicisi ngA;
		do
		{
			ngA = new GPSAlicisi();
			System.out.println("Alici pasif durumda.");
		}while(!ngA.isActive);
		System.out.println("Alici aktif durumda.\n");

		Uydu nUydu1 = new Uydu();
		Uydu nUydu2 = new Uydu(ngA);
		
		GPSProgrami ngP = new GPSProgrami(ngA);

	}
}

class GPSAlicisi
{
	private int sicaklik;
	private String cumle;
	public boolean isActive;
	
	public GPSAlicisi()
	{
		sicaklik = sicaklikOlc();
		
		if(this.sicaklik >= 5 && this.sicaklik <= 40)
			this.isActive = true;
		else
			this.isActive = false;
	}
	
	private byte sicaklikOlc()
	{
		return (byte)(Math.round(Math.random()) * 40);
	}
	
	public void uydudanVeriAl(byte cumleCesidi)
	{
		switch(cumleCesidi)
		{
		case 1:
			this.cumle = "$GPGGA,N,40,30,E";
			break;
			
		case 2:
			this.cumle = "$GPRMC,41,N,E,31";
			break;
			
		case 3:
			this.cumle = "$GPGLL,N,E,42,32";
			break;
		}
	}
	
	public String programaVeriGonder()
	{
		return cumle;
	}
}

class GPSProgrami
{
	private String konumVerisi = "";
	private String enlem = "";
	private String boylam = "";
	
	public GPSProgrami(GPSAlicisi gA)
	{
		this.konumBilgisi(gA.programaVeriGonder());
	}
	
	private void konumBilgisi(String konumVerisi)
	{
		this.konumVerisi = konumVerisi.split(",")[0].substring(1);
		
		switch(this.konumVerisi)
		{
		case "GPGGA":
			this.enlem += konumVerisi.split(",")[2];
			this.enlem += konumVerisi.split(",")[1];
			this.boylam +=  konumVerisi.split(",")[3];
			this.boylam +=  konumVerisi.split(",")[4];
			break;

		case "GPRMC":
			this.enlem += konumVerisi.split(",")[1];
			this.enlem += konumVerisi.split(",")[2];
			this.boylam +=  konumVerisi.split(",")[4];
			this.boylam +=  konumVerisi.split(",")[3];
			break;
		
		case "GPGLL":
			this.enlem += konumVerisi.split(",")[3];
			this.enlem += konumVerisi.split(",")[1];
			this.boylam +=  konumVerisi.split(",")[2];
			this.boylam +=  konumVerisi.split(",")[4];
			break;
		}
		System.out.println("Konum Verisi: " + this.konumVerisi); //???
		System.out.println("Enlem: " + this.enlem);
		System.out.println("Boylam: " + this.boylam);
	}
}

class Uydu
{
	public Uydu()
	{
		System.out.println("Bagli GPS alicisi bulunmamaktadir.");
	}
	
	public Uydu(GPSAlicisi gA)
	{
		System.out.println("GPS alicisina baglanildi.");
		gA.uydudanVeriAl(veriTuruSec());
	}
	
	private byte veriTuruSec()
	{
		return (byte)(Math.ceil(Math.random() * 3));
	}
}